package com.mtons.mblog.base.model.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 缓存锁
 * @author yunhao.qi
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CacheLock {

    /**
     * key的前缀
     * @return
     */
    String prefix() default "nova:";

    /**
     * 缓存锁的key
     * 用于指向缓存中维护的锁或锁集合
     * @return
     */
    String key() default "";

    /**
     * 缓存锁的自定义参数values
     * 使用Spel可传入参数级别的自定义values，values支持单字符串，也支持逗号分割的字符串
     * @return
     */
    String values() default "";

    /**
     * 提示信息
     * @return
     */
    String reminder() default "";

    /**
     * 超时时间
     * @return
     */
    long timeout() default 10L;

    /**
     * 超时时间单位
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.MINUTES;

}
